package com.scheduling.machine.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.scheduling.machine.dto.MachineTypeDTO;
import com.scheduling.machine.dto.MachineTypeQueryDTO;
import com.scheduling.machine.entity.MachineType;

import java.util.List;

/**
 * 机器类型业务层接口
 *
 * @author 开发团队
 * @since 2025-05-29
 */
public interface MachineTypeService extends IService<MachineType> {

    /**
     * 分页查询机器类型列表
     *
     * @param queryDTO 查询条件
     * @return 机器类型分页列表
     */
    IPage<MachineType> getMachineTypePage(MachineTypeQueryDTO queryDTO);

    /**
     * 根据ID获取机器类型详情
     *
     * @param machineTypeId 机器类型ID
     * @return 机器类型详情
     */
    MachineType getMachineTypeById(String machineTypeId);

    /**
     * 添加机器类型
     *
     * @param machineTypeDTO 机器类型信息
     * @return 添加结果
     */
    boolean addMachineType(MachineTypeDTO machineTypeDTO);

    /**
     * 更新机器类型
     *
     * @param machineTypeDTO 机器类型信息
     * @return 更新结果
     */
    boolean updateMachineType(MachineTypeDTO machineTypeDTO);

    /**
     * 删除机器类型
     *
     * @param machineTypeId 机器类型ID
     * @return 删除结果
     */
    boolean deleteMachineType(String machineTypeId);

    /**
     * 批量删除机器类型
     *
     * @param machineTypeIds 机器类型ID列表
     * @return 删除结果
     */
    boolean deleteMachineTypes(List<String> machineTypeIds);

    /**
     * 获取所有机器类型列表（用于下拉选择）
     *
     * @return 机器类型列表
     */
    List<MachineType> getAllMachineTypes();

    /**
     * 检查机器类型名称是否存在
     *
     * @param typeName  机器类型名称
     * @param excludeId 排除的ID（更新时使用）
     * @return 是否存在
     */
    boolean checkTypeNameExists(String typeName, String excludeId);
} 